package org.example.ioc;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@Slf4j
public class IocConfig2 {

    // 不同类下可以使用字段或方法参数两种方式注入

    @Autowired
    // 或者
    // @Resource
    // @Resource("serviceB2")
    // @Autowired @Qualifier("serviceB2")
    public ServiceB serviceB2;

    @Bean("serviceA3")
    // 或者
    // ...(@Qualifier("serviceB1") ServiceB serviceB1)
    //
    // 注意： @Resource 注解不能用在参数上
    public ServiceA serviceA3(ServiceB serviceB1) {
        log.info("create serviceA3");
        return new ServiceA(serviceB1);
    }

    @Bean("serviceA4")
    public ServiceA serviceA4() {
        log.info("create serviceA4");
        return new ServiceA(serviceB2);
    }

}
